監聽(或稱嗅探,英文:Sniffering)
就是以第三方的角色來獲取資訊。
看起來好像只有壞人才會做這件事,
其實不然,
封包監聽工具常常可用來偵測通訊是否異常,
有時候也是個不錯的除錯工具。
在網路通訊中最常聽到的監聽工具應該就是 Wireshark 了,
BLE 的開發工具中,
目前我知道的是 Nordic nRF Sniffer for Bluetooth LE 和 TI SmartRF Protocol Packet Sniffer,
TI 的 Sniffer有兩種版本,但我還不清楚兩者功能的差別,
這次要用的是 PACKET-SNIFFER,
馬上就用這款工具來監聽手機怎麼和開發板來溝通吧。
首先開啟Packet Sniffer.exe後選擇"Bluetooth Low Energy",
下方就會顯示可支援此封包監聽的硬體裝置,
接著按下"Start"
此時會跳出另一個視窗,這就是用來看封包的主要畫面,
下面有幾個標籤頁,我介紹這次會用到的,
軟體會自動偵測USB Dongle並顯示到第一個標籤頁"Capturing device",
接著第二個標籤頁"Radio Configuration",
之前有說過BLE共有三個廣播通道,#37、#38和#39,
這裡就是用來指定要監聽哪一個通道,
硬體和軟體都設定完成後,就可以點上方的播放鍵開始抓取空氣中的封包,
我們把抓取的結果和程式碼放在一起來做比對,
可以發現我抓到了四筆廣播封包,
每個封包的間隔都約1秒左右,符合程式碼設定的廣播區間,
這四個廣播封包裡面的AdvData也和程式碼中的advertData陣列中的資料一致。
接下來這個步驟會比較麻煩一點,
手機和開發板在進行藍牙連接過程中,
會先在廣播頻道發現彼此,
接著溝通好連接參數後開始跳頻,
監聽器也要跟上他們的節奏才能抓到所有的封包,
由於廣播頻道有三個,
Packet Sniffer 一次只能監聽一個頻道,
中獎機率有三成三,不高也不低,
反正多試幾次就會中了,
或是一次放三個USB Dongle分別監聽三個廣播頻道,
又或者是讓開發板只在某一個頻道上廣播。
下圖是監聽工具攔截到手機發起的連線請求以及連接參數等,
連線後手機和開發板之間還會再同步一些Service之類的訊息,這我就先跳過了。
完成手機和開發板的連線後,
從監聽工具可以看出來手機和開發板之間頻繁的在發送連接事件,
這就是無線通訊保持連線的真面目。
最後我從手機端用Lightblue 發送0x04的指令到板子上,
(這邊會有讀取的請求是因為Lightblue 的關係,若改用其他APP可能就不會有了。)
依序對封包稍微解釋一下:
從以上實驗得知,
封包監聽工具能輕易的把裝置之間的通訊都顯示出來,
這時才發現到自己開發的無線通訊裝置,
在駭客的眼中是多麼的赤裸裸。
因此通訊的加密非常重要,
千萬不要使用未加密的訊息來進行通訊,
以免重要的訊息內容或是指令編碼格式被看光光。